﻿///////////////////////////////////////////////////////////////
// Projet serveur entreprise
// Authors: Pierre Corsini, Guillaume Blanc
// mars 2011
///////////////////////////////////////////////////////////////

using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Principal;
using System.Threading;
using System.Security.Permissions;
using System.Collections;

namespace DLL
{
    public class Securite
    {
        public enum Droit { Client, Admin, Conseiller };

        public static Utilisateur seConnecter(String user, String pwd, Droit droit)
        {
            AccessDB dll = new AccessDB();

            Utilisateur[] liste = new Utilisateur[]{};
            switch (droit)
            {
                case Droit.Admin:
                    liste = dll.extraireAdministrateur().ToArray();
                    break;

                case Droit.Client:
                    liste = dll.extraireClients().ToArray();
                    break;

                case Droit.Conseiller:
                    liste = dll.extraireConseillers().ToArray();
                    break;
            }

            Utilisateur userobj = null;
            foreach (Utilisateur u in liste)
            {
                if (u.User != user || u.Pwd != pwd)
                    continue;

                userobj = u;
                break;
            }

            if (userobj == null)
                return null;

            GenericIdentity userIdentity = new GenericIdentity(userobj.Id.ToString());
            GenericPrincipal principalSecurity = new GenericPrincipal(userIdentity, new String[] { droit.ToString().ToLower() });
            Thread.CurrentPrincipal = principalSecurity;


            return userobj;
        }
    }
}
